package com.occludens.client;

import com.google.gwt.event.shared.EventBus;
import com.google.gwt.inject.client.AsyncProvider;
import com.google.gwt.inject.client.GinModules;
import com.google.gwt.inject.client.Ginjector;
import com.google.inject.Provider;
import com.gwtplatform.mvp.client.proxy.PlaceManager;
import com.gwtplatform.mvp.client.proxy.ProxyFailureHandler;
import com.occludens.client.guide.GuideModule;
import com.occludens.client.guide.GuidePresenter;
import com.occludens.client.landing.LandingModule;
import com.occludens.client.landing.LandingPresenter;
import com.occludens.client.main.MainModule;
import com.occludens.client.main.MainPresenter;
import com.occludens.client.page.PageModule;
import com.occludens.client.page.PagePresenter;
import com.occludens.client.resources.Resources;
import com.occludens.client.resources.Translations;
import com.occludens.client.widget.WidgetModule;

@GinModules({MainModule.class,WidgetModule.class,LandingModule.class,PageModule.class,GuideModule.class})
public interface MainGinjector extends Ginjector{
	EventBus getEventBus();

    PlaceManager getPlaceManager();

    ProxyFailureHandler getProxyFailureHandler();

    Resources getResources();

    Translations getTranslations();

    SignedInGatekeeper getSignedInGatekeeper();

    Provider<MainPresenter> getMainPresenter();

    Provider<LandingPresenter> getLandingPresenter();
    
    Provider<PagePresenter> getContentPresenter();

    //Provider<PerformancePresenter> getPerformancePresenter();

    AsyncProvider<GuidePresenter> getGuidePresenter();

    //AsyncProvider<ShowPresenter> getShowPresenter();

    //AsyncProvider<LocationPresenter> getLocationPresenter();
}
